WebBrowser nekorektni chovani
Otázka od: MUDr. Patrik VALENTA
12. 10. 2002 15:08
Zdravim.
Nevite nekdo cim je zpusobeno ze :
mam-li v WebBrowser komponente nactenou stranku s formularem tak v ni
obsazeny
prvek <textarea> neakceptuje klavesu Enter pro odradkovani.
V IE tato stranka normalne funguje.
tady je kdyztak kod html:
<form method=post>
<Select name="komu">
<option value="Valik">Valik</option>
</select><br>
<b>Message:</b><br>
<textarea name="text" cols="54" rows="6"></textarea><br>
<input type=submit value="Send">
</form>
valik
Odpovedá: Petr Vones
13. 10. 2002 16:13
From: "MUDr. Patrik VALENTA" <valentapat@volny.cz>
> Nevite nekdo cim je zpusobeno ze :
> mam-li v WebBrowser komponente nactenou stranku s formularem tak v ni
> obsazeny
> prvek <textarea> neakceptuje klavesu Enter pro odradkovani.
> V IE tato stranka normalne funguje.
Tento problem je popsan tady, bohuzel ten kod nejde ani prelozit:
http://community.borland.com/article/0,1410,6302,00.html
Vypada to, ze by to mohlo fungovat takto, nenasel jsem k tomu ale zadnou dalsi
dokumentaci, takze je to tvoreno spise metodou pokus-omyl upravou toho kodu z
vyse zmineneho odkazu:
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FOldBrowserWndPoc: TWndMethod;
procedure WebBrowserWndProc(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
ActiveX;
procedure TForm1.WebBrowserWndProc(var Message: TMessage);
var
Msg: TMsg;
begin
if (Message.Msg >= CN_BASE + WM_KEYFIRST) and (Message.Msg <= CN_BASE +
WM_KEYLAST) then
begin
Msg.HWnd := WebBrowser1.Handle;
Msg.Message := Message.Msg - CN_BASE;
Msg.WParam := Message.WParam;
Msg.LParam := Message.LParam;
Msg.Time := GetMessageTime;
Msg.Pt.X := $115DE1F1;
Msg.Pt.Y := $115DE1F1;
if (Message.WParam <> VK_RETURN) and
((WebBrowser1.DefaultInterface as
IOleInPlaceActiveObject).TranslateAccelerator(Msg) = S_OK) then
Message.Result := 1
else
Message.Result := 0;
end
else
FOldBrowserWndPoc(Message);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FOldBrowserWndPoc := WebBrowser1.WindowProc;
WebBrowser1.WindowProc := WebBrowserWndProc;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WebBrowser1.WindowProc := FOldBrowserWndPoc;
end;
Petr Vones